// 返回顶部按钮
window.addEventListener("load", function () {
	pointNo = 60;
	sphereNo = 5;
	initSphereV = 0.15;
	gravity = 3;
	initV = 0.65;
	fluxLength = 9;
	CAMZ = 15;

	Draw = () => {
		(W = c.width / 2), (H = c.height / 2);
		x.globalAlpha = 0.3;
		x.fillStyle = "#000";
		x.fillRect(0, 0, c.width, c.height);
		x.strokeStyle = "#fff";
		if (!t) {
			P = [];
			P3D = (X, Y, Z) => {
				Z += CAMZ;
				return { X: W + (X / Z) * W, Y: H + (Y / Z) * W, D: Z > 0 ? Z : 0 };
			};
			R = (V, YAW, PITCH, ROLL) => {
				let D = Math.hypot(V.Y, V.Z);
				let P = Math.atan2(V.Y, V.Z) + PITCH;
				V.Y = S(P) * D;
				V.Z = C(P) * D;
				D = Math.hypot(V.X, V.Z);
				P = Math.atan2(V.X, V.Z) + YAW;
				V.X = S(P) * D;
				V.Z = C(P) * D;
				D = Math.hypot(V.X, V.Y);
				P = Math.atan2(V.X, V.Y) + ROLL;
				V.X = S(P) * D;
				V.Y = C(P) * D;
				V.VX = V.X * initV;
				V.VY = V.Y * initV;
				V.VZ = V.Z * initV;
			};
			for (j = 0; j < sphereNo; ++j) {
				(X1 = -5 + Math.random() * 10),
					(Y1 = -5 + Math.random() * 10),
					(Z1 = -5 + Math.random() * 10);
				p1 = Math.random() * Math.PI * 2;
				p2 =
					Math.pow(Math.pow(Math.random(), 3 / 4) / Math.PI, 3 / 4) * 3.706 +
					(Math.random() >= 0.5 ? Math.PI : 0);
				VX = S(p1) * S(p2) * initSphereV;
				VY = C(p2) * initSphereV;
				VZ = C(p1) * S(p2) * initSphereV;
				P.push({ X: X1, Y: Y1, Z: Z1, VX, VY, VZ, V: [], OV: [] });
				for (i = pointNo + 1; i--; ) {
					p1 = Math.random() * Math.PI * 2;
					p2 =
						Math.pow(Math.pow(i / pointNo, 3 / 4) / Math.PI, 3 / 4) * 3.706 +
						(i % 2) * Math.PI;
					VX = X = S(p1) * S(p2);
					VY = Y = C(p2);
					VZ = Z = C(p1) * S(p2);
					VX *= initV;
					VY *= initV;
					VZ *= initV;
					P[P.length - 1].V.push({ X, Y, Z, VX, VY, VZ });
					P[P.length - 1].OV.push({
						X: X1 + X,
						Y: Y1 + Y,
						Z: Z1 + Z,
						VX,
						VY,
						VZ,
					});
				}
			}
		}
		for (j = 0; j < P.length; ++j) {
			for (k = 0; k < P[j].V.length; ++k) {
				P[j].OV[k].X = P[j].X + P[j].VX + P[j].V[k].X;
				P[j].OV[k].Y = P[j].Y + P[j].VY + P[j].V[k].Y;
				P[j].OV[k].Z = P[j].Z + P[j].VZ + P[j].V[k].Z;
				P[j].OV[k].VX = P[j].V[k].VX;
				P[j].OV[k].VY = P[j].V[k].VY;
				P[j].OV[k].VZ = P[j].V[k].VZ;
			}
			P[j].X += P[j].VX;
			P[j].Y += P[j].VY;
			P[j].Z += P[j].VZ;
			D = Math.pow(0.5 + Math.hypot(P[j].X, P[j].Y, P[j].Z), 2);
			P[j].VX -= ((P[j].X / 300) * gravity) / D;
			P[j].VY -= ((P[j].Y / 300) * gravity) / D;
			P[j].VZ -= ((P[j].Z / 300) * gravity) / D;
			v = 1 + 0.000025 * gravity;
			P[j].VX /= v;
			P[j].VY /= v;
			P[j].VZ /= v;
			for (k = 0; k < P.length; ++k) {
				if (j != k) {
					D = Math.pow(
						Math.hypot(P[j].X - P[k].X, P[j].Y - P[k].Y, P[j].Z - P[k].Z),
						2
					);
					P[j].VX -= (((P[j].X - P[k].X) / 500) * gravity) / D;
					P[j].VY -= (((P[j].Y - P[k].Y) / 500) * gravity) / D;
					P[j].VZ -= (((P[j].Z - P[k].Z) / 500) * gravity) / D;
				}
			}
			for (i = 0; i < P[j].V.length; ++i) {
				R(P[j].V[i], 0.01, 0.01, 0);
				P1 = P3D(
					P[j].X + P[j].V[i].X,
					P[j].Y + P[j].V[i].Y,
					P[j].Z + P[j].V[i].Z
				);
				//x.beginPath()
				if (P1.D) {
					s = 0.5 + 500 / (1 + P1.D * P1.D);
					x.fillStyle = "#fff";
					x.globalAlpha = 1;
					x.fillRect(P1.X - s / 2, P1.Y - s / 2, s, s);
					opx = P1.X;
					opy = P1.Y;
					//x.moveTo(P1.X,P1.Y)
				}
				for (k = 0; k < fluxLength; ++k) {
					P[j].OV[i].X += P[j].OV[i].VX;
					P[j].OV[i].Y += P[j].OV[i].VY;
					P[j].OV[i].Z += P[j].OV[i].VZ;
					mind = 1000000000;
					for (m = 0; m < P.length; ++m) {
						if (m != j) {
							D = Math.pow(
								Math.hypot(
									P[j].OV[i].X - P[m].X,
									P[j].OV[i].Y - P[m].Y,
									P[j].OV[i].Z - P[m].Z
								),
								2
							);
							if (D < mind) {
								mind = D;
								target = m;
							}
						}
					}
					P[j].OV[i].VX -= (P[j].OV[i].X - P[target].X) / 1 / mind;
					P[j].OV[i].VY -= (P[j].OV[i].Y - P[target].Y) / 1 / mind;
					P[j].OV[i].VZ -= (P[j].OV[i].Z - P[target].Z) / 1 / mind;
					D = Math.hypot(P[j].OV[i].VX, P[j].OV[i].VY, P[j].OV[i].VZ);
					P[j].OV[i].VX = (P[j].OV[i].VX / D) * initV;
					P[j].OV[i].VY = (P[j].OV[i].VY / D) * initV;
					P[j].OV[i].VZ = (P[j].OV[i].VZ / D) * initV;
					P1 = P3D(P[j].OV[i].X, P[j].OV[i].Y, P[j].OV[i].Z);
					if (P1.D) {
						x.globalAlpha = 0.6 - (0.6 / fluxLength) * k;
						x.strokeStyle = `hsl(${150 + D * 175},99%,50%)`;
						x.beginPath();
						x.moveTo(opx, opy);
						x.lineTo(P1.X, P1.Y);
						x.stroke();
						opx = P1.X;
						opy = P1.Y;
					}
				}
			}
		}
		t += 1 / 60;
		requestAnimationFrame(Draw);
	};
	c = document.getElementById("c");
	x = c.getContext("2d");
	c.width = c.clientWidth;
	c.height = c.clientHeight;
	S = Math.sin;
	C = Math.cos;
	window.addEventListener("resize", () => {
		c.width = c.clientWidth;
		c.height = c.clientHeight;
	});
	t = 0;
	Draw();
	// 跳转
	$("header button").addEventListener("click", function () {
		window.location = "../html/login.html";
	});
	// 银行
	const dataList = [
		{
			category: "finance",
			img: "../imgs/szyh.png",
			name: "苏州银行数据API服务系统",
			desc: "苏州银行的前身是江苏东吴农村商业银行股份有限公司，2011年经监管批准，由农村中小金融机构监管序列调整为中小商业银行监管序列。2019年8月2日，苏州银行登陆A股，为全国第33家、江苏省第9家上市银行。2020年3月9日，“2019年中国银行业100强榜单”发布，苏州银行排名第51位。",
		},
		{
			category: "finance",
			img: "../imgs/hcfc2.png",
			name: "河北幸福消金三方数据管理平台",
			desc: "河北幸福消费金融股份有限公司是河北省首家批准成立的消费金融公司。公司坚持以“融入互联网生态，融入河北生态，融入股东生态”为主线，打造产品服务、内容服务和能力服务为核心目标，致力于打造一家以技术为驱动、以智慧金融和普惠金融为特色的公众公司。截至2019年底，幸福消金累计投放贷款近500亿元，全年新增270亿元。",
		},
		{
			category: "finance",
			img: "../images/sznsyh.png",
			name: "苏州农商行数据敏捷共享平台",
			desc: "苏州农商银行是全国第四家A股上市的农商银行，也是银监会成立后在新监管框架下第一批挂牌开业的农村商业银行。近年来，苏州农商银行聚焦主责主业，以支农支小、服务地方经济建设为主要目标，践行了一条符合自身实际的差异化定位、特色化经营之路。在当下金融行业数字化转型的大潮中，苏州农商银行积极探索金融科技转型之道，运用互联网思维，通过智能化和不断迭代的服务，满足不同客户的多元化、个性化需求，实现差异化发展，走出自己的特色化之路。",
		},

		{
			category: "business",
			img: "../imgs/zhylian.png",
			name: "中国银联便民缴费内容交换平台",
			desc: "中国银联（China UnionPay）成立于2002年3月，是经国务院同意，中国人民银行批准设立的中国银行卡联合组织，总部设于上海。截至2019年9月，中国银联已成为全球发卡量最大的卡组织，发行近80亿张银行卡。",
		},
		{
			category: "business",
			img: "../imgs/zgtxfw.png",
			name: "中通服三方数据管理平台",
			desc: "本项目是建设中国通信服务股份有限公司上海分公司（以下简称“中通服”）的三方数据管理平台，通过智能数据管理平台的线上化系统，进行业务数据的有效管理，规范业务操作流程，防范业务风险，实现资源共享、高效一致的有效运作。",
		},
		{
			category: "business",
			img: "../imgs/airbus.png",
			name: "空客VOOM BI分析系统",
			desc: "Voom 是一个由 Airbus 运营，方便、可靠的直升机订单、运营管理(B2C，B2B)平台，能给有需求的旅客提供便捷、快速的城市直升机服务。本项目涉及Voom的数据仓库和BI工具的建设，服务对象为Voom管理人员和运营人员，为Voom服务的管理决策，和日常运营的精细化改进提供数据支撑。",
		},

		{
			category: "government",
			img: "../imgs/scm.png",
			name: "苏城码",
			desc: "中国银联（China UnionPay）成立于2002年3月，是经国务院同意，中国人民银行批准设立的中国银行卡联合组织，总部设于上海。截至2019年9月，中国银联已成为全球发卡量最大的卡组织，发行近80亿张银行卡。",
		},
		{
			category: "government",
			img: "../imgs/sgaj.png",
			name: "大数据防线",
			desc: "华东某市公安局，高度重视智慧公安建设，依托大数据赋能警务实战。并在全国率先提出通过融合多源异构海量数据，进一步提升精准化研判、预判水平。并委托聚合数据帮助其建设智能化平台。",
		},
		{
			category: "government",
			img: "../imgs/szfjg.png",
			name: "市域社会治理",
			desc: "华东某市获批全国首批市域社会治理现代化试点城市，紧密围绕中央、省、市决策部署，立足该市实际，突出问题导向，超前谋划、大胆探索，精准推进政法智能化深度应用，搭建统一集成、高效协同、市域一体的社会治理现代化综合指挥平台。",
		},
	];
	// 获取元素
	const divs = $("#bank .photo div:nth-child(1)");
	let number = 0;
	setInterval(function () {
		number++;
		number >= dataList.length ? (number = 0) : number;
		$("#bank .photo div:nth-child(2) img").src = dataList[number].img;
		divs.children[1].innerHTML = dataList[number].name;
		divs.children[2].innerHTML = dataList[number].desc;
	}, 1500);
});

// 回到顶部
this.window.addEventListener("scroll", function () {
	if (this.scrollY >= 1250) {
		$("#getTop").style.opacity = 1;
	} else {
		$("#getTop").style.opacity = 0;
	}
	$("#getTop").addEventListener("click", function () {
		scrollTo({ left: 0, top: 0, behavior: "smooth" });
	});
});
